home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 35 / Amiga Format AFCD35 (Issue 119, Jan 1999).iso / -in_the_mag- / reader_requests / fredobbutils / bbsrc / megaboot1_30.s < prev    next >
Text File  |  1998-11-06  |  5KB  |  249 lines

  1. *** Bootblock spécial: MEGABOOT 1.30 by PIQ of VORTEX 42
  2. * An old utility boot (it was great with kickstart 1.3)
  3. * Won't work under 2.0+
  4.  
  5. Start:
  6.     dc.b    "DOS",0
  7.     dc.b    "SUM "
  8. val:    dc.l    1
  9.  
  10. Main:
  11.     move.l    4.w,a6
  12.     MOVEM.L    D0-A6,-(A7)
  13.     LEA    val(PC),A0
  14.     LEA    $DFF000,A5
  15.     CMP    #33,$14(A6)    ;kickstart 1.2 ?
  16.     BEQ.B    LB_0028
  17.     TST.L    (A0)
  18.     BNE.B    LB_003A
  19.     BRA.B    LB_0030
  20. LB_0028    LEA    val(PC),A0
  21.     TST.L    (A0)
  22.     BEQ.B    LB_003A
  23. LB_0030    MOVE    #$0F00,$0180(A5)
  24.     BRA.W    LB_0100
  25. LB_003A    MOVE    #$0008,$0180(A5)
  26.     MOVE.L    #$BFEC01,$010C.W
  27.     BTST    #6,$00BFE001
  28.     BNE.W    LB_00DC
  29.     LEA    LB_02A6(PC),A0
  30.     TST.L    $004E(A6)
  31.     BEQ.B    LB_0060
  32.     CLR.B    (A0)
  33. LB_0060    BSR.W    LB_0110
  34.     MOVE.L    #$00078000,$0108.W
  35.     move.l    $9c(a6),a0    ;execbase->gfxbase
  36.     MOVE.L    A0,$0100.W
  37.     MOVE.L    $26(A0),$0104.W        ;old coplist
  38.     BSR.W    LB_01AA
  39.     BSR.W    LB_01BA
  40.     LEA    CopList(PC),A0
  41.     MOVE.L    A0,$0080(A5)
  42.     MOVE.W    #$8380,$0096(A5)
  43.     BSR.W    LB_019A
  44. LB_0094    LEA    $00BFD100,A0
  45.     ORI.B    #$80,(A0)
  46.     ANDI.B    #$F7,(A0)
  47.     BSR.W    LB_0140
  48.     CMPI.B    #$5F,D0
  49.     BEQ.W    LB_015E
  50.     CMPI.B    #$5D,D0
  51.     BEQ.W    LB_035C
  52.     CMPI.B    #$5B,D0
  53.     BEQ.W    LB_0148
  54.     CMPI.B    #$59,D0
  55.     BEQ.B    LB_00FC
  56.     CMPI.B    #$57,D0
  57.     BEQ.B    LB_010A
  58.     CMPI.B    #$55,D0
  59.     BNE.B    LB_0094
  60. LB_00D0    MOVE.L    $0104.W,$0080(A5)
  61.     MOVE.W    #$0100,$0096(A5)
  62. LB_00DC    MOVE.L    #$FF01FF07,$008E(A5)
  63.     MOVEM.L    (A7)+,D0-A6
  64.     LEA    dosname(pc),A1
  65.     JSR    -96(A6)
  66.     MOVE.L    D0,A0
  67.     MOVE.L    22(A0),A0
  68.     MOVEQ    #0,D0
  69.     RTS
  70. LB_00FC    CLR.L    $26(A6)
  71. LB_0100    MOVE.L    #$F800D2,$80.W
  72.     TRAP    #0
  73. LB_010A    CLR.L    $0026(A6)
  74.     BRA.B    LB_00D0
  75. LB_0110    MOVEM.L    A0/A1/A6,-(A7)
  76.     LEA    diskname(pc),A1
  77.     moveq    #0,D0
  78.     JSR    -$01F2(A6)
  79.     MOVE.L    D0,A6
  80.     MOVEQ    #2,D0
  81.     JSR    -$001E(A6)
  82.     BEQ.B    LB_013A
  83.     MOVEQ    #1,D0
  84.     JSR    -$001E(A6)
  85.     BEQ.B    LB_013A
  86.     LEA    LB_02C0(PC),A0
  87.     MOVE.B    #4,(A0)
  88. LB_013A    MOVEM.L    (A7)+,A0/A1/A6
  89.     RTS    
  90. LB_0140    MOVE.L    $010C.W,A0
  91.     MOVE.B    (A0),D0
  92.     RTS    
  93. LB_0148
  94.     suba.l    a0,a0
  95.     LEA    $40000,A1
  96.     MOVE    #$BFFF,D0
  97.     BSR.W    LB_0354
  98.     BRA.W    LB_0094
  99. LB_015E    LEA    LB_02A6(PC),A0
  100.     TST.B    (A0)
  101.     BNE.W    LB_0094
  102.     LEA    $00FC0136,A0
  103.     LEA    $0166.W,A1
  104.     MOVE.W    #$4E75,-(A1)
  105.     MOVEq    #$18,D0
  106. LB_017A    MOVE.L    -(A0),-(A1)
  107.     DBF    D0,LB_017A
  108.     JSR    $013C.W
  109.     LEA    $40000,A7
  110.     SUBA.L    A4,A4
  111.     LEA    $0676.W,A6
  112.     MOVE.L    #$FC0208,$80.W
  113.     TRAP    #0
  114. LB_019A    LEA    $0180(A5),A0
  115.     MOVEQ    #$1F,D0
  116. LB_01A0    MOVE.W    #$0008,(A0)+
  117.     DBF    D0,LB_01A0
  118.     RTS    
  119. LB_01AA    MOVE.L    $0108.W,A0
  120.     MOVE.W    #$0BFF,D0
  121. LB_01B2    CLR.L    (A0)+
  122.     DBF    D0,LB_01B2
  123.     RTS    
  124. LB_01BA    MOVE.L    $0100.W,A6
  125.     LEA    -$1000(A0),A1
  126.     JSR    -$00C6(A6)    ;InitRastport()
  127.     MOVE.L    $94(A6),$34(A1)
  128.     MOVE    #8,$3A(A1)
  129.     MOVE    #4,$1C(A1)
  130.     LEA    $80(A1),A0
  131.     MOVE.L    A0,4(A1)
  132.     MOVEQ    #1,D0
  133.     MOVE    #640,D1
  134.     MOVE    #200,D2
  135.     JSR    -$0186(A6)    ;InitBitMap()
  136.     MOVE.L    $0108.W,$0088(A1)
  137.     LEA    Mega.txt(PC),A0
  138. LB_01F8    CLR    D0
  139.     CLR    $24(A1)
  140.     MOVE.B    (A0)+,$38(A1)
  141.     MOVE.B    (A0)+,D0
  142.     MOVE.B    (A0)+,$25(A1)
  143.     MOVE.B    (A0)+,$27(A1)
  144.     BSR.B    LB_0232
  145.     CLR    $24(A1)
  146.     MOVE.B    -2(A0),$25(A1)
  147.     ADD    #320,$24(A1)
  148.     BSR.B    LB_0232
  149.     ADD    D0,A0
  150.     TST.B    1(A0)
  151.     BNE.B    LB_01F8
  152.     MOVE.L    4.W,A6
  153.     RTS    
  154. LB_0232    MOVEM.L    D0/A0/A1,-(A7)
  155.     JSR    -$003C(A6)
  156.     MOVEM.L    (A7)+,D0/A0/A1
  157.     RTS    
  158. CopList:
  159.  DC.w $0100,$2200,$0102,$0020
  160.  DC.w $0104,$0000,$008E,$2C81
  161.  DC.w $0090,$F4C1,$0092,$0038
  162.  DC.w $0094,$00D0,$00E0,$0007
  163.  DC.w $00E2,$8028,$00E4,$0007
  164.  DC.w $00E6,$8000,$0180,$0008
  165.  DC.w $0182,$0CC0,$0184,$0000
  166.  DC.w $0186,$0CC0,$FFFF,$FFFE
  167.  
  168. dosname:dc.b "dos.library",0
  169. diskname:dc.b "disk.resource",0
  170.  
  171. Mega.txt:
  172.     DC.B    $00
  173.     DC.B    '"',$18,$0A
  174.     DC.B    'MegaBoot 1.30'
  175. LB_02A6
  176.     DC.B    $04,$16,'2',$1C,'F1. Remove f'
  177. LB_02B6
  178.     DC.B    'ast memory'
  179. LB_02C0
  180.     DC.B    $00
  181.     DC.B    $1A,'2&F2. Remove external drives',$00
  182.     DC.B    $09,'20F3. Copy*',$00
  183.     DC.B    $0E,'2:F4. Hard '
  184. LB_02F8
  185.     DC.B    'reset',$00
  186.     DC.B    $16,'2DF5. No dead-end reset*',$00
  187. LB_0318
  188.     DC.B    $0F,'2NF6. Normal bo'
  189. LB_0328
  190.     DC.B    'ot',$00
  191.     DC.B    '"',$18,'a  All coding by PIQ of V'
  192. LB_0346
  193.     DC.B    'ortex '
  194. LB_034C
  195.     DC.B    '42  ',$00
  196.  
  197.     even    
  198. LB_0354    MOVE.L    (A0)+,(A1)+
  199.     DBF    D0,LB_0354
  200.     RTS    
  201. LB_035C    LEA    LB_02C0(PC),A0
  202.     CMP.B    #4,(A0)
  203.     BEQ.W    LB_0094
  204. LB_0368    MOVEQ    #$3F,D0
  205.     LEA    LB_0382(PC),A0
  206.     LEA    $0300.W,A1
  207.     MOVE.L    A1,$002E(A6)
  208.     BSR.B    LB_0354
  209.     BSR.B    LB_03A8
  210.     BRA.W    LB_0100
  211. LB_0382    MOVEM.L    D0-A6,-(A7)
  212.     LEA    $0300.W,A0
  213. LB_038A    MOVE.L    A0,$002E(A6)
  214.     BSR.B    LB_03A8
  215.     LEA    LB_0400(PC),A0
  216.     MOVE.L    -$0064(A6),(A0)
  217.     LEA    LB_03BC(PC),A0
  218. LB_039E    MOVE.L    A0,-$0064(A6)
  219.     MOVEM.L    (A7)+,D0-A6
  220.     RTS    
  221. LB_03A8    CLR    D0
  222. LB_03AA    LEA    $22(A6),A0
  223.     MOVEQ    #$17,D1
  224. LB_03B0    ADD    (A0)+,D0
  225.     DBF    D1,LB_03B0
  226.     NOT    D0
  227.     MOVE    D0,(A0)
  228. LB_03BA    RTS    
  229. LB_03BC    CMPA.L    #$00FC47FC,a1
  230.     BNE.B    LB_03FE
  231.     LEA    $00FC47FC,A1
  232.     MOVEM.L    D0/D1/A0,-(A7)
  233.     LEA    $0100.W,A0
  234.     MOVEQ    #$73,D1
  235. LB_03D6    MOVE.L    (A1)+,(A0)+
  236.     DBF    D1,LB_03D6
  237.     LEA    $0100.W,A0
  238.     LEA    $44(A0),A1
  239.     MOVE.L    A1,$16(A0)
  240.     MOVE.L    #$26FCFFFF,$0188(A0)
  241.     MOVE.L    #$FFFF4E75,$018C(A0)
  242.     MOVE.L    A0,A1
  243.     MOVEM.L    (A7)+,D0/D1/A0
  244. LB_03FE    dc.w    $4ef9
  245. LB_0400    dc.l    0
  246.  
  247. End:
  248.     dcb.b    512*2,0
  249.